package org.dxy.infrastructure.persistent.db.mybatispuls.po;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * @description: 参数定义实体类（全局参数池）
 * @author: dxy
 * @createTime: 2025/1/21
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("param_definition")
@EqualsAndHashCode(callSuper = true)
public class ParamDefinitionPo extends Model<ParamDefinitionPo> {

    /**
     * 主键ID
     */
    @TableId(type = IdType.INPUT)
    private Long id;

    /**
     * 参数编码（如：TEMP, PRESSURE, VOLTAGE）
     */
    private String code;

    /**
     * 参数名称（如：温度, 压力, 电压）
     */
    private String name;

    /**
     * 单位（如：℃, Pa, V）
     */
    private String unit;

    /**
     * 输入类型（AUTO_COLLECT: 自动采集, MANUAL_INPUT: 人工录入）
     */
    private String inputType;

    /**
     * 数据类型（NUMBER: 数值, STRING: 文本, BOOLEAN: 布尔）
     */
    private String dataType;

    /**
     * 默认值
     */
    private String defaultValue;

    /**
     * 有效范围（如：0-100）
     */
    private String validRange;

    /**
     * 描述
     */
    private String description;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 更新人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 是否删除（0: 未删除, 1: 已删除）
     */
    @TableLogic
    private Integer isDeleted;
}